#pragma once
#include "EventType.h"
#include <vector>
#include <boost/function.hpp>

class EventParams
{

};

class Slot
{
public:
	virtual void operator()(EventParams&) = 0;
};

class Event
{
public:
	Event(EventType t);
	virtual ~Event(void);

	void operator()(EventParams&);

	EventType getEventType() const
	{
		return m_type;
	}

	template<typename T>
	void subscibe(const T& s)
	{
		m_solts.push_back(s);
	}

	
private:
	EventType m_type;
	std::vector<boost::function1 <void,EventParams> > m_solts;
};
